#include <iostream>
#include <mutex>

/**
 * C++ 锁（Locks）
 *
 * C++提供了多种锁类型，用于简化互斥量的使用和管理
 *
 * 常见的锁类型包括：
 *
 * std::lock_guard  :  作用域锁，当构造时自动锁定互斥量，当析构时自动解锁。
 * std::unique_lock :  与std::lock_guard类似，但提供了更多灵活性，例如可以转移所有权和手动解锁。
 *
 */

//锁的使用示例
std::mutex mtx;

void safeFunctionWithLockGuard(){
    std::lock_guard<std::mutex> lk(mtx);
    //访问或修改共享资源
}

void safeFunctionWithUniqueLock(){
    std::unique_lock<std::mutex> ul(mtx);
    //访问或修改共享资源
    ul.unlock();  //可选： 手动解锁
}

int main() {
    std::cout << "Hello, World!" << std::endl;
    return 0;
}
